iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 23
1

上章我們已經安裝好了Dlib函式庫,我們在程式碼的開頭也要記得匯入。

import dlib
import cv2
import imutils

本章我們要做的功能是利用電腦本身的攝像頭,配合dlib的人臉捕捉函式,做到只留臉部的攝影程式。

所以我們要先設置好攝像頭:

cap = cv2.VideoCapture(0)

接著引入Dlib的人臉偵測器:

detector = dlib.get_frontal_face_detector()

就可以開始編寫程式主體了!

ret, frame = cap.read()

face_rects = detector.run(frame, 0)

上面的動作為:使用cap.read用攝像頭讀取一張圖片,然後將圖片丟入人臉偵測器中進行辨識,辨識出來的結果存入face_rects變數,方便下面的步驟使用。

for i, d in enumerate(face_rects):
    x1 = d.left()
    y1 = d.top()
    x2 = d.right()
    y2 = d.bottom()

上面的迴圈是用來刻出人臉所在的具體位置和上下左右的座標。enumeratePython函式,可用於將一個可遍歷/可叠代的對象一一枚舉,這裡就不多做介紹。

result = frame[y1:y2, x1:x2]

這裡我們將已經抓出來的上下左右座標對應到原始圖片,並且用圖片分割將除了臉部以外的其他部份去掉,只留下完整臉部的大頭照。

有了result結果之後,下面的步驟就很簡單了:

cv2.imshow("FaceShow",result)

cap.release()
cv2.destroyAllWindows()

試著實際操作看看吧!

要記得在程式執行之前,先把眼鏡、口罩這些會影響臉部辨識的東西摘掉,不然人臉偵測器捕捉不到東西可是會在Terminal報錯的!


上一篇
Day22-安裝Dlib
下一篇
Day24-動態人臉辨識
系列文
OpenCV 從零開始的影像處理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言